package net.servir.capacidades.dao;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import net.servir.capacidades.model.*;
import net.servir.capacidades.model.jsp.JspResponsableEdicion;
import net.servir.capacidades.model.jsp.JspUsuarioEdicion;
import net.servir.capacidades.model.Estudios;
import net.servir.capacidades.model.MayorGradoAcademico;
import net.servir.capacidades.model.Snip;
import net.servir.capacidades.model.TipoEstudio;

public interface CapacidadesDAO {

	public LinkedList<Sistema> ObtenerSistema();
	public LinkedList<Ambito> ObtenerAmbito(Number id_sistema);
	public LinkedList<Ejecutora> ObtenerEjecutora(Number id_ejecutora);
	public Integer ObtenerPerfil(String dni, String clave);
	public String ObtenerFechaSistema();
	public String ObtenerFechaHoraSistema();
	public List<Etapa> ObtenerEtapasAmbito(Number idAmbito);	
	public List<Etapa> ObtenerEtapasAmbitoPersonalizado(Number idAmbito,Number idEjecutora, String isFuncionesPersonalizadas, Number id_sistema_etapa);
	public Sistema GetSistema(Number idSistema);
	public Usuario GetUsuarioIdentificacion(String dni);
	public LinkedList<Ejecutora> ObtenerEjecutorasNivelGobierno(Integer idNivelGobierno,String ubigeo,  Integer idSector);
	public List<Provincia> ObtenerProvincias(String coddep);
	public LinkedList<Distrito> ObtenerDistritos(String coddep, String codpro);
	public LinkedList<NivelGobierno> ObtenerNivelGobiernos();
	public LinkedList<Departamento> ObtenerDepartamentos();
	public LinkedList<Sector> ObtenerSectors();
	public List ObtenerParticipanteBusqueda(String vSql);
	public List ObtenerParticipanteOficializar(String vSql);
	
	//-- jm--
		public List<Etapa> ObtenerEtapasNivelGobierno(Number idNivelGobierno, Number idResponsable);
		public List<Etapa> ObtenerEtapasNivelGobiernoSA(Number idNivelGobierno, Number idResponsable,String isFuncionesPersonalizadas,
				Number id_sistema_etapa);
		int ObtenerNroFuncionesP(Number idNivelGobierno, Number idEjecutora);
		public boolean TieneOperadoresAsignados(Number id_responsable);
		public Integer AplicaFuncionesPersonalizadas(Number idResponsable);
		public List<Etapa> getEtapasNivelGobierno(Number idAmbito,Number idResponsable);
		public Integer ObtenerIdNivelGobierno(Number idEjecutora);
		public String obtenerListaFunciones(Number id_ejecutora);
		public List<Etapa> ObtenerFuncionesOrdenadas(Number idAmbito);
		public void eliminarDestinariosCorreoEnviados(Number id_servicio_civil, String dniUsuario);
	//--fin--
	
	public String ObtenerClave(String dni, Integer idSistema);
	public LinkedList<Test> ObtenerTestDiagnostico(Integer idAmbito);
	public LinkedList<Test> ObtenerListaTest(Integer idAmbito, Integer idTipoPrueba);
	public LinkedList<Test> ObtenerTestDiagnosticoNoEjecutados(Integer idAmbito);

	public ServicioCivil ObtenerServicioCivil(Number idServicioCivil);
	public LinkedList<Regimen> ObtenerRegimen();
	public LinkedList<TipoObservacion> ObtenerTipoObservacion();
	public LinkedList<Profesion> ObtenerProfesion();
	public LinkedList<TipoDocumento> ObtenerTipoDocumento();
	public List ObtenerFunciones(Number idServicioCivil);
	public List<Number> ObtenerIdFuncionesSC(Number idServicioCivil);
	public String EditarCorreo(ServicioCivil obj);
	public LinkedList<LogAuditoria> ObtenerLogAuditoria(String dni);
	public List ObtenerDatosPrueba(Integer idTest,Integer idSistema, Integer idAmbito);
	/* ====================================================
	 * ============ DAO DE RESPONSABLE EDICION ===========
	 * ====================================================
	 */
	public Responsable GetResponsablePorDNI(String dni, Number idAmbito);
	public Responsable GetResponsable(Number idResponsable);
	public ServicioCivil ObtenerServicioCivilPorDNI(String dni, Number id_persona, Number id_ambito);
	public List<Diagnostico> ObtenerDiagnosticos();
	public Diagnostico GetDiagnostico(Number idDiagnostico);
	public Persona GetPersona(Responsable responsable);
	public Persona GetPersona(String dni);
	public Persona GetPersona(String dni, Number idAmbito);
	public Persona GetPersonaPorEmail(String email, Number idAmbito);

	//===========   CENSO   INICIO========
	public List<ResponsableEjecutoraAmbito> ObtenerAmbitosResponsable(Number idResponsable);
	//===========   CENSO   FIN========

	public void EliminarParticipante(JspResponsableEdicion obj);

	public Responsable GetResponsablePorEjecutora(Number idEjecutora);
	public Integer grabarNuevoResponsable(JspResponsableEdicion obj,Vector<Object> funcionesPersonalizadas);
	public Integer grabarResponsablePersona(JspResponsableEdicion obj);
	public void grabarResponsable(JspResponsableEdicion obj,Vector<Object> funcionesPersonalizadas);
	public void grabarValidacion(Persona persona,Number IdEjecutora);
	public void grabarHabilitacion(JspResponsableEdicion obj);

	
	/* ====================================================
	 * ============ DAO DE RESPONSABLE BUSQUEDA ===========
	 * ====================================================
	 */
	public LinkedList<GenOption> ObtenerEstadosResponsable();
	public LinkedList<GenOption> ObtenerEstadosOperadores();
	public LinkedList<GenOption> ObtenerPerfiles();
	public LinkedList<GenOption> ObtenerEstadosInscritos();
	public LinkedList<GenOption> ObtenerEstadosPlazo();
	public List<RptResponsableBusqueda> obtenerRptResponsables(String vSql);
	public String obtenerRptQueryResponsables(ResponsableBusqueda obj);
	/* ====================================================
	 * ============ DAO DE SERVICIO CIVIL BUSQUEDA ===========
	 * ====================================================
	 */
	public List obtenerRptServicioCivil(String vSql);
	public String obtenerRptQueryServicioCivil(ServicioCivilBusqueda obj);
	/* ====================================================
	 * ============ DAO DE SERVICIO CIVIL EDICION =========
	 * ====================================================
	 */
	public ResponsableIdentificacion GetResponsableIdentificacion(String dni);	
	public String VerificarExisteDNI(String dni, Number idEjecutora);
	public String verificarExisteDNI(String dni);
	public void EliminarServicioCivil(ServicioCivil obj);
	public String AgregarServicioCivil(ServicioCivil obj);
	public String AgregarFuncionesSC(Number idServicioCivil, String listaFunciones, Number idAmbito);
	public String EditarServicioCivil(ServicioCivil obj);
	public void grabarObservacion(ServicioCivil obj);
	public void grabarSubsanacion(ServicioCivil obj);
	public void grabarValidacion(ServicioCivil obj);
	public void grabarInvalidacion(ServicioCivil obj);
	//Viene de CENSO DAO
	public LinkedList<ResponsableIdentificacion> ObtenerResponsableIdentificacion(String dni);

//necesario
	public Ejecutora GetEjecutora(Number idEjecutora);
	public List ObtenerServicioCivilBusquedaFromSql(String sql);
	public Number cargarResultadosBusqueda(String vSql, String dni, Integer tipo);
	public List ObtenerDestinatariosCorreo(String dni);
	public String ObtenerQueryDestinatariosCorreo(String dni);
//Participante
	public String ObtenerQueryParticipanteBusqueda(ParticipanteBusqueda obj);
	public String obtenerQueryParticipanteOficializar(ParticipanteBusqueda obj, String dniUsuario);

	public LinkedList<Test> ObtenerTestDiagnoticoPorDNI(String dni, Number id_persona);
	public void grabarInvalidacion(Persona persona, Number idEjecutora);
	public void grabarInhabilitacion(JspResponsableEdicion obj);
	public LinkedList<GenOption> ObtenerModalidadesResponsables();
	public void grabarDesasignacion(JspResponsableEdicion obj);
	public void finalizarInscripcionParticipantes(JspResponsableEdicion obj);
	public LinkedList<Pliego> obtenerPliegos(Integer idSector);
	public Integer grabarEjecutora(Ejecutora ejecutora);
	public Test getTest(Integer idTest);
	public LinkedList<BancoPregunta> obtenerBancoPreguntas();
	public Integer grabarTest(Test test);
	public Test obtenerTest(Integer idTest);
	public void habilitarPrueba(Integer idTest);
	public void iniciarPrueba(Integer idTest);
	public String generarPrueba(Integer idTest);
	public void calificarPrueba(Integer idTest);
	public void informarPrueba(Integer idTest);
	public LinkedList<ExmPerfil> obtenerExmPerfiles(Integer idSistema);
	public void eliminarCandidato(Integer idServicioCivil, String dniUsuario);
	public void oficializarCandidatos(String vSqlOfi, String dniUsuario, Integer idTest);
	public void eliminarCandidatos(String vSqlOfi, String dniUsuario);
	public void eliminarParticipante(Integer idParticipante);
	public String ObtenerNuevaClave(ServicioCivil obj);
	public String obtenerQueryCorreoMasivo(ParticipanteBusqueda obj, String dniUsuario);
	public void eliminarDestinarioCorreo(Integer idServicioCivil, String dniUsuario);
	public void eliminarDestinariosCorreo(String desSql, String dniUsuario);
	public void confirmarDestinariosCorreo(String desSql, String dniUsuario);
	public CorreoMasivo getCorreoMasivo(String dniUsuario);
	public void grabarCorreo(CorreoMasivo correo_masivo);
	public void ejecutarPrueba(Number id_correo_masivo);
	public void ejecutarEnvio(Number id_correo_masivo, String dniUsuario);
	public LinkedList<GenOption> obtenerTiposCorreo();
	public LinkedList<GenOption> obtenerTiposCorreoMasivo();
	public void grabarCorreoRegular(CorreoRegular correo);
	public void ejecutarPruebaCorreo(CorreoRegular correo, String correo_pruebas);
	public CorreoRegular getCorreoRegular(CorreoRegular correo);
	public LinkedList<SegPerfil> obtenerPerfiles();
	public String agregarUsuario(JspUsuarioEdicion obj);
	
	public String ObtenerDescEtapaFuncion(Number idFuncion);
	public List ObtenerActividades(Number idFuncion);
	public LinkedList<EjecutoraRegimen> ObtenerRegimenes();
	public Integer tieneResponsableLaEjecutora(Integer id_ejecutora);
	public void actualizarResponsableDeEjecutora(JspResponsableEdicion obj, Responsable responsableActual);
	//public void actualizarResponsableDeEjecutora(JspResponsableEdicion obj);
	public Persona GetOtraPersonaPorEmail(Integer id_persona, String email, Number idAmbito) ;
	public Persona GetOtraPersonaPorDni(Integer id_persona, String dni, Number idAmbito);
	public String VerificarExisteOtroDNI(String dni, Number idAmbito, Number idServicioCivil);
	public String VerificarExisteOtroCorreo(String correo, Number idAmbito, Number idServicioCivil);
	public List<String> getParametroCorreo();
	public void eliminarParticipantes(String lsql);
	public void ejecutarEnvioMasivo(String cod_tipo, String dniUsuario);
	public void informarPruebaPorCorreo(Integer idTest);
	public void cerrarPrueba(Integer idTest);
	//Checks
	
	public void checkInicializarDeacHabilitar(Integer idTest);
	public Boolean checkoficializar(Integer idTest);
	public Boolean checkhabilitar(Integer idTest);
	public Boolean  checkCerrar(Integer idTest);
	public Boolean checkCalificar(Integer idTest);
	public Boolean checkGenePruebas(Integer idTest);
	public Boolean ceckIniciarlizar(Integer idTest);
	
	//--- jp ---
	public LinkedList<Estudios> ObtenerEstudios();
	public LinkedList<MayorGradoAcademico> ObtenerMayorGradoAcademico();
	public LinkedList<Snip> ObtenerSnip();
	public String ObtenerTituloUniversitario(Number idServicioCivil);
	//--- fin ---
	
	public List ObtenerFuncionesSeleccionadasResponsable(Number id_ejecutora, Number id_ambito,Number id_responsable);
	public LinkedList<SistemaEtapa> ObtenerSistemaEtapa();
	public void mailFinalizaCenso(Number idResponsable,Number idSistema, Number idAmbito);
	public LinkedList<SistemaEtapa> ObtenerSistemaEtapa(Number idAmbito);
	public Number validacionMasiva(String vSql);
	public PuestoTipo getPuestoTipo(Number idPuestoTipo);
	
	public LinkedList<Universidad> getUniversidades();
	
	public Number fechaFinalizacionMasiva(String vsql, String fechaFinalizacion);
	public Number habilitacionMasiva(String vSql, String fecHabilitacion, String plazo);
	
	public LinkedList<TipoEstudio> getTipoEstudio();
	
	public void setFlagVisualizoCorreo(String dni);
	public Integer getFlagVisualizoCorreo(String dni);
}

